package com.bolt.report.engine;

import com.bolt.report.engine.export.Exporter;
import com.bolt.report.engine.fill.ExporterVisitor;
import com.bolt.report.engine.fill.HyperlinkData;

import java.io.IOException;

public interface FillElement<R> {

    HyperlinkData getHyperlinkData();

    void setHyperlinkData(HyperlinkData hyperlinkData);

    R getValue();

    void setValue(R value);

    <T> void accept(FillElementVisitor<T> visitor, T arg);


    <E extends Exporter> void accept(ExporterVisitor<E> visitor, E exporter) throws IOException;
}